home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #324 (1994-04)(Rhein-Sieg-Soft).zip / Franz PD Disk #324 (1994-04)(Rhein-Sieg-Soft).adf / VideoText3.5 / source / global.p < prev    next >
Text File  |  1994-04-01  |  3KB  |  84 lines

  1. UNIT global; {$project vt}
  2. { globale Variablen und Typdeklarationen zum Programm VideoText }
  3.  
  4. INTERFACE;
  5.  
  6. CONST anzsubpage = 15;
  7.       qlen = 15;      { max. Anzahl wartender Seitenaufträge }
  8.       maxactive = 4;  { max. Anzahl gleichzeitig suchbarer Seiten im SAA 5246 }
  9.  
  10. TYPE p_onepage = ^onepage;
  11.      onepage = RECORD
  12.                  next,prev: p_onepage;
  13.                  pg,sp: Integer;
  14.                  chars: ARRAY [0..959] OF Byte;
  15.                  cbits: Word;
  16.                END;
  17.      str80 = String[80];
  18.      bigstring = String[256];
  19.      zeiteintrag = RECORD tage,min,tics: Long; END;
  20.  
  21. VAR root,thispage: p_onepage;
  22.     queue: ARRAY [1..qlen] OF RECORD
  23.              pg,sp: Integer;
  24.            END;
  25.     queued: Integer;
  26.     activejobs: ARRAY [0..maxactive-1] OF RECORD
  27.         pg,sp: Integer;
  28.         sp_count,sp_max,akt_sp: Integer;
  29.         sp_check: ARRAY [0..anzsubpage] OF Boolean;
  30.         lastaction: zeiteintrag;     { so 'ne Art DateStamp }
  31.         wartezeit: Integer;
  32.         holen,erledigt: Boolean;
  33.         ist_UT: Byte;  { Bits für aging-Verfahren }
  34.       END;
  35.     thisjob: Integer; { zeigt auf einen wartenden (>0) oder aktiven Job (<0) }
  36.     aktspeicher: Integer;   { der Speicher, in dem die VT-Uhr läuft }
  37.     maxwait, burst,shuffle, busdelay: Integer;
  38.     outputname: str80;
  39.     AsciiRawIff: Integer;
  40.     overwrite,protokoll: Boolean;
  41.     stop: Boolean;
  42.     lastkey: Char;
  43.  
  44. PROCEDURE add_time(delta: zeiteintrag; VAR zeit: zeiteintrag);
  45. PROCEDURE sub_time(delta: zeiteintrag; VAR zeit: zeiteintrag);
  46. FUNCTION diff_time(alt, neu: zeiteintrag): Long;
  47.  
  48. { ---------------------------------------------------------------------- }
  49.  
  50. IMPLEMENTATION;
  51.  
  52. { Rechnen mit Zeiteinträgen }
  53.  
  54. PROCEDURE add_time{(delta: zeiteintrag; VAR zeit: zeiteintrag)};
  55. BEGIN
  56.   IF zeit.tics + delta.tics>=3000 THEN Inc(zeit.min);
  57.   zeit.tics := (zeit.tics + delta.tics) MOD 3000;
  58.   IF zeit.min + delta.min>=1440 THEN Inc(zeit.tage);
  59.   zeit.min := (zeit.min + delta.min) MOD 1440;
  60.   zeit.tage := zeit.tage + delta.tage;
  61. END;
  62.  
  63. PROCEDURE sub_time{(delta: zeiteintrag; VAR zeit: zeiteintrag)};
  64. BEGIN
  65.   IF zeit.tics - delta.tics<0 THEN Dec(zeit.min);
  66.   zeit.tics := (zeit.tics - delta.tics + 3000) MOD 3000;
  67.   IF zeit.min - delta.min<0 THEN Dec(zeit.tage);
  68.   zeit.min := (zeit.min - delta.min + 1440) MOD 1440;
  69.   zeit.tage := zeit.tage - delta.tage;
  70. END;
  71.  
  72. FUNCTION diff_time{(alt, neu: zeiteintrag): Long};
  73. { liefert die Differenz zwischen zwei Zeitpunkten in Ticks (1/50-Sekunden) }
  74. BEGIN
  75.   diff_time := neu.tics - alt.tics + 3000 * ( (neu.min - alt.min)
  76.                + 1440 * (neu.tage - alt.tage) );
  77. END;
  78.  
  79. BEGIN  { Initialisierungen }
  80.   thispage := Nil; root := Nil;
  81.   aktspeicher := 0; thisjob := aktspeicher;
  82.   overwrite := True; AsciiRawIff := 1; protokoll := False;
  83. END.
  84.